// 测试前端API连接到本地后端服务器
const axios = require('axios');

// 本地后端服务器地址
const LOCAL_API_URL = 'http://localhost:3000/api';

// 测试配置
const testConfig = {
  timeout: 5000, // 5秒超时
};

// 测试函数
async function testApiConnection() {
  console.log('===== 开始测试前端API连接到本地后端 =====');
  console.log(`本地服务器地址: ${LOCAL_API_URL}`);
  
  try {
    // 测试登录API
    console.log('\n测试登录API...');
    const loginResponse = await testLogin();
    console.log('  ✅ 登录API测试成功！');
    
    // 使用登录获取的token测试需要认证的接口
    if (loginResponse && loginResponse.data && loginResponse.data.token) {
      console.log('\n测试带认证的接口...');
      const token = loginResponse.data.token;
      await testAuthenticatedApi(token);
    }
    
    console.log('\n===== 所有测试通过！ =====');
    console.log('前端应用已正确配置为连接本地后端服务器。');
    console.log('请在浏览器中刷新页面并尝试登录。');
  } catch (error) {
    console.error('\n❌ 测试失败:', error.message);
    console.error('请检查以下几点:');
    console.error('1. 本地后端服务器是否正在运行 (node bin/www)');
    console.error('2. 数据库是否已正确初始化');
    console.error('3. 网络连接是否正常');
  }
}

// 测试登录API
async function testLogin() {
  try {
    const testCredentials = {
      username: '23002944',
      pwd: '123456'
    };
    
    console.log(`  测试用户: ${testCredentials.username}`);
    const response = await axios.post(`${LOCAL_API_URL}/user/login`, testCredentials, {
      timeout: testConfig.timeout
    });
    
    if (response.data && response.data.errno === 0) {
      console.log('  ✅ 登录成功！');
      console.log(`  用户ID: ${response.data.data.id}`);
      console.log(`  Token: ${response.data.data.token.substring(0, 20)}...`);
      return response.data;
    } else {
      console.error('  ❌ 登录失败:', response.data?.message || '未知错误');
      throw new Error('登录API返回错误');
    }
  } catch (error) {
    console.error('  ❌ 登录请求失败:', error.message);
    throw error;
  }
}

// 测试带认证的API
async function testAuthenticatedApi(token) {
  try {
    const response = await axios.get(`${LOCAL_API_URL}/demo/getallitems`, {
      params: { typeIndex: 6 }, // 课程表索引
      headers: {
        'Authorization': `Bearer ${token}`
      },
      timeout: testConfig.timeout
    });
    
    if (response.data && response.data.errno === 0) {
      console.log('  ✅ 认证成功！');
      console.log(`  获取到 ${response.data.data.length} 条课程数据`);
    } else {
      console.error('  ❌ 认证失败或数据获取错误');
      throw new Error('认证接口测试失败');
    }
  } catch (error) {
    console.error('  ❌ 认证请求失败:', error.message);
    throw error;
  }
}

// 执行测试
if (require.main === module) {
  testApiConnection();
}